<?php

/**
 * 不同的工厂产出不同的产品
 */


/**
 * 汽车接口
 */
interface ICar
{
	/**
	 * 介绍方法
	 */
	public function intro();
}

/**
 * 面包车
 */
class Van implements ICar
{
	public function intro()
	{
		echo '我是面包车。<br/>';
	}
}

/**
 * 卡车
 */
class Truck implements ICar
{
	public function intro()
	{
		echo '我是卡车。<br/>';
	}
}

/**
 * 客车
 */
class Bus implements ICar
{
	public function intro()
	{
		echo '我是客车。<br/>';
	}
}



/**
 * 工厂接口
 */
interface IFactory
{
	public function createCar();
}

/**
 * 面包车工厂
 */
class VanFactory implements IFactory
{
	public function createCar()
	{
		return new Van();
	}
}

/**
 * 卡车工厂
 */
class TruckFactory implements IFactory
{
	public function createCar()
	{
		return new Truck();
	}
}

/**
 * 客车工厂
 */
class BusFactory implements IFactory
{
	public function createCar()
	{
		return new Bus();
	}
}

class Client
{
	public static function main()
	{
		echo '面包车工厂创建面包车。<br/>';
		$factory = new VanFactory();
		$van = $factory->createCar();
		$van->intro();
		
		echo '卡车工厂创建卡车。<br/>';
		$factory = new TruckFactory();
		$truck = $factory->createCar();
		$truck->intro();
		
		echo '客车工厂创建卡车。<br/>';
		$factory = new BusFactory();
		$bus = $factory->createCar();
		$bus->intro();
	}
}

Client::main();